package com.zhitan.ems.app.iot.entity;

import java.util.Date;

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.zhitan.ems.common.annotation.Excel;
import com.zhitan.ems.framework.core.mp.base.BaseEntity;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * 设备
 * 
 * @author zhitan
 * 
 * @date 2025-09-19 22:15:46
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("iot_device")
public class DeviceEntity extends BaseEntity {
	private static final long serialVersionUID = 1L;
	/**
	 * 设备ID
	 */
	@TableId
	@ApiModelProperty("设备ID")
	@Excel(name = "设备ID")
	private Long id;
	
	@ApiModelProperty("能源类型：10 水 20 电 30 气 ")
	@Excel(name = "能源类型")
	private Integer energyType;
	
	@ApiModelProperty("规格型号")
	@Excel(name = "规格型号")
	private String specification;
	
	@ApiModelProperty("测量范围")
	@Excel(name = "测量范围")
	private String measurementRange;
	
	
	@ApiModelProperty("设备名称")
	@Excel(name = "设备名称")
	private String deviceName;
	/**
	 * 设备编码
	 */
	@ApiModelProperty("设备编码")
	@Excel(name = "设备编码")
	private String deviceCode;
	/**
	 * 设备类型名称
	 */
	@ApiModelProperty("设备类型名称")
	@Excel(name = "设备类型名称")
	private Integer deviceType;
	/**
	 * 设备类型名称
	 */
	@ApiModelProperty("设备类型名称")
	@Excel(name = "设备类型名称")
	private String deviceTypeName;
	/**
	 * 设备对应ID
	 */
	@ApiModelProperty("设备对应ID")
	@Excel(name = "设备对应ID")
	private Long deviceTypeId;
	/**
	 * 
	 */
	@Excel(name = "")
	private Integer deviceCodeId;
	/**
	 * 子设备网关编号
	 */
	@ApiModelProperty("子设备网关编号")
	@Excel(name = "子设备网关编号")
	private String gwDevCode;
	/**
	 * 固件版本
	 */
	@ApiModelProperty("固件版本")
	@Excel(name = "固件版本")
	private Float firmwareVersion;
	/**
	 * 
	 */
	@Excel(name = "")
	private Integer state;
	/**
	 * 设备状态（1-未激活，2-禁用，3-在线，4-离线）
	 */
	@ApiModelProperty("设备状态（1-未激活，2-禁用，3-在线，4-离线）")
	@Excel(name = "设备状态（1-未激活，2-禁用，3-在线，4-离线）")
	private Integer onlineState;
	/**
	 * 上线时间
	 */
	@ApiModelProperty("上线时间")
	@JsonFormat(pattern = "yyyy-MM-dd")
	@Excel(name = "上线时间", width = 30, dateFormat = "yyyy-MM-dd")
	private Date onlineTime;
	/**
	 * 下线时间
	 */
	@ApiModelProperty("下线时间")
	@JsonFormat(pattern = "yyyy-MM-dd")
	@Excel(name = "下线时间", width = 30, dateFormat = "yyyy-MM-dd")
	private Date offlineTime;
	/**
	 * 连接超时（s）
	 */
	@ApiModelProperty("连接超时（s）")
	@Excel(name = "连接超时（s）")
	private Integer timeout;
	/**
	 * 信号强度（ 信号极好4格[-55— 0]， 信号好3格[-70— -55]， 信号一般2格[-85— -70]， 信号差1格[-100— -85]）
	 */
	@ApiModelProperty("信号强度")
	@Excel(name = "信号强度")
	private Integer rssi;
	/**
	 * 定位方式(1=ip自动定位，2=设备定位，3=自定义)
	 */
	@ApiModelProperty("定位方式(1=ip自动定位，2=设备定位，3=自定义)")
	@Excel(name = "定位方式(1=ip自动定位，2=设备定位，3=自定义)")
	private Integer locationWay;
	/**
	 * 备注
	 */
	@ApiModelProperty("备注")
	@Excel(name = "备注")
	private String remark;
	/**
	 * 创建时间
	 */
	@ApiModelProperty("创建时间")
	@JsonFormat(pattern = "yyyy-MM-dd")
	@Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
	private Date createAt;
	/**
	 * 更新时间
	 */
	@ApiModelProperty("更新时间")
	@JsonFormat(pattern = "yyyy-MM-dd")
	@Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd")
	private Date updateAt;
	/**
	 * 设备所在地址
	 */
	@ApiModelProperty("设备所在地址")
	@Excel(name = "设备所在地址")
	private String networkAddress;
	/**
	 * 设备入网IP
	 */
	@ApiModelProperty("设备入网IP")
	@Excel(name = "设备入网IP")
	private String networkIp;
	/**
	 * 是否激活
	 */
	@ApiModelProperty("是否激活")
	@Excel(name = "是否激活")
	private Integer isActive;
	/**
	 * 激活时间
	 */
	@ApiModelProperty("激活时间")
	@JsonFormat(pattern = "yyyy-MM-dd")
	@Excel(name = "激活时间", width = 30, dateFormat = "yyyy-MM-dd")
	private Date activeTime;
	/**
	 * 设备经度
	 */
	@ApiModelProperty("设备经度")
	@Excel(name = "设备经度")
	private String longitude;
	/**
	 * 设备纬度
	 */
	@ApiModelProperty("设备纬度")
	@Excel(name = "设备纬度")
	private String latitude;
	/**
	 * 快照图片
	 */
	@ApiModelProperty("快照图片")
	@Excel(name = "快照图片")
	private String snapshot;
	/**
	 * 部门ID
	 */
	@ApiModelProperty("部门ID")
	@Excel(name = "部门ID")
	private Integer deptId;
	/**
	 * 部门名称
	 */
	@ApiModelProperty("部门名称")
	@Excel(name = "部门名称")
	private String deptName;
	/**
	 * 渠道ID
	 */
	@ApiModelProperty("渠道ID")
	@Excel(name = "渠道ID")
	private Integer channelId;
	/**
	 * 渠道名称
	 */
	@ApiModelProperty("渠道名称")
	@Excel(name = "渠道名称")
	private String channelName;
	/**
	 * 产品ID
	 */
	@ApiModelProperty("产品ID")
	@Excel(name = "产品ID")
	private Long productId;
	/**
	 * 产品名称
	 */
	@ApiModelProperty("产品名称")
	@Excel(name = "产品名称")
	private String productName;
	/**
	 * 厂家ID
	 */
	@ApiModelProperty("厂家ID")
	@Excel(name = "厂家ID")
	private Integer factoryId;
	/**
	 * 厂家名称
	 */
	@ApiModelProperty("厂家名称")
	@Excel(name = "厂家名称")
	private String factoryName;
	/**
	 * 地址
	 */
	@ApiModelProperty("地址")
	@Excel(name = "地址")
	private String address;
	/**
	 * 显示url
	 */
	@ApiModelProperty("显示url ")
	@Excel(name = "显示url ")
	private String showUrl;
	/**
	 * 分组ID
	 */
	@ApiModelProperty("分组ID")
	@Excel(name = "分组ID")
	private Integer cateId;
	/**
	 * 分组名称
	 */
	@ApiModelProperty("分组名称")
	@Excel(name = "分组名称")
	private String cateName;
	/**
	 * 大分类 0 智能设备 1 工程项目
	 */
	@ApiModelProperty("大分类 0 智能设备 1 工程项目")
	@Excel(name = "大分类 0 智能设备 1 工程项目")
	private Integer kind;
	/**
	 * 是否有端口
	 */
	@ApiModelProperty("是否有端口")
	@Excel(name = "是否有端口")
	private Integer portType;
	/**
	 * 租户ID
	 */
	@ApiModelProperty("租户ID")
	@Excel(name = "租户ID")
	private Long tenantId;
	/**
	 * 租户名称
	 */
	@ApiModelProperty("租户名称")
	@Excel(name = "租户名称")
	private String tenantName;
	/**
	 * 是否是模拟设备
	 */
	@ApiModelProperty("是否是模拟设备")
	@Excel(name = "是否是模拟设备")
	private Integer isSimulate;
	/**
	 * 从机id
	 */
	@ApiModelProperty("从机id")
	@Excel(name = "从机id")
	private Integer slaveId;
	/**
	 * 设备摘要，格式[{"name":"device"},{"chip":"esp8266"}]
	 */
	@ApiModelProperty("设备摘要，格式[\"name\":\"device\"},{\"chip\":\"esp8266\"}]")
	@Excel(name = "设备摘要")
	private String summary;
	/**
	 * 用户ID
	 */
	@ApiModelProperty("用户ID")
	@Excel(name = "用户ID")
	private Long userId;
	/**
	 * 用户昵称
	 */
	@ApiModelProperty("用户昵称")
	@Excel(name = "用户昵称")
	private String userName;
	/**
	 * 是否虚表
	 */
	@ApiModelProperty("是否虚表")
	@Excel(name = "是否虚表")
	private Integer isVirtual;
	@ApiModelProperty("是否重点关注")
	@Excel(name = "是否重点关注")
	private Integer focusState;
	@ApiModelProperty("推送时间")
	@Excel(name = "推送时间")
	private Integer upDataTime;

}